home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / program / n_b_v203.zip / TINPUTM2.INC < prev    next >
Text File  |  1996-07-04  |  6KB  |  114 lines

  1. $if 0
  2.     ┌──────────────────────────╖                        PowerBASIC v3.20
  3.  ┌──┤          DASoft          ╟──────────────────────┬──────────────────╖
  4.  │  ├──────────────────────────╢    Copyright 1995    │ DATE: 1995-10-01 ╟─╖
  5.  │  │ FILE NAME   TINPUTM2.INC ║          by          ╘════════════════─ ║ ║
  6.  │  │                          ║  Don Schullian, Jr.                     ║ ║
  7.  │  ╘══════════════════════════╝                                         ║ ║
  8.  │ A license is hereby granted to the holder to use this source code in  ║ ║
  9.  │ any program, commercial or otherwise,  without receiving the express  ║ ║
  10.  │ permission of the copyright holder and without paying any royalties,  ║ ║
  11.  │ as long as this code is not distributed in any compilable format.     ║ ║
  12.  │  IE: source code files, PowerBASIC Unit files, and printed listings   ║ ║
  13.  ╘═╤═════════════════════════════════════════════════════════════════════╝ ║
  14.    │                ....................................                   ║
  15.    ╘═══════════════════════════════════════════════════════════════════════╝
  16. $endif
  17.  
  18. FUNCTION fTinputM2$( SEG D$(), SEG F$(), SEG T?(), SEG H$(), SEG Fld% ) LOCAL PUBLIC
  19.   LOCAL Exet$, G$, G%, HelpOn%, X%, T&
  20.   LOCAL E?(), MyEvent%, Last%, TabFlds%
  21.  
  22.   DIM tINP AS TinputTYPE
  23.   Exet$ = CHR$(0,45,0,59,0,68,0,72,0,80,0,117,0,119)
  24.   TabFlds% = UBOUND( T?(1) )
  25.   IF TabFlds% > 0 THEN Exet$ = CHR$(9,0,15) + Exet$
  26.   Last% = UBOUND( D$(1) )
  27.   Fld%  = MIN( MAX( 1, Fld% ), Last% )
  28.   HelpOn% = UBOUND( H$(1) )
  29.   IF HelpON% > 0 THEN Hline$ = fHelpLine$( H$(Fld%), 1 )
  30.   DIM E?(3,Last%)                              ' event boxes set-up
  31.   E?(0,0) = pbvScrnRows                        '
  32.   E?(1,0) = pbvScrnCols                        '
  33.   FOR G% = 1 TO Last%                          '
  34.     LSET tINP = F$(G%)                         ' field data
  35.     E?(0,G%) = tINP.Row                        ' event box
  36.     E?(1,G%) = tINP.Col                        '
  37.     E?(2,G%) = tINP.Row                        '
  38.     E?(3,G%) = tINP.Cols + tINP.Col - 1        '
  39.     E?(0,0) = MIN( E?(0,0), E?(0,G%) )         ' compute top/left
  40.     E?(1,0) = MIN( E?(1,0), E?(1,G%) )         '
  41.     E?(2,0) = MAX( E?(2,0), E?(2,G%) )         ' and bottom/right
  42.     E?(3,0) = MAX( E?(3,0), E?(3,G%) )         '
  43.   NEXT
  44.   MyEvent% = fEventOpenT%( E?(0,0), Last% )
  45.   MouseONnow
  46.   DO
  47.     IF HelpOn% > 0 THEN fHelpLine H$(Fld%)
  48.     G$ = fTinputM$( D$(Fld%), F$(Fld%), Exet$, 31, 113, Fld% )
  49.     G% = fASCIIr%( G$ )
  50.     IF G% = 27 THEN EXIT LOOP
  51.     IF G% = 59 THEN
  52.       ' PUT HELP CALL HERE
  53.       ITERATE
  54.     END IF
  55.     LSET tINP = F$(Fld%)
  56.     IF tINP.Just > 0 THEN
  57.       D$(Fld%) = fJustify$( D$(Fld%), tINP.Cols, tINP.Just )
  58.       TprintCLEAR tINP.Row, tINP.Col, tINP.Cols, D$(Fld%), 0
  59.     END IF
  60.     IF G% = 255 THEN
  61.       IF fEventLastBox% <> MyEvent% THEN
  62.           G% = 68
  63.         ELSE
  64.           Fld% = fEventLastItem%
  65.           ITERATE
  66.     END IF
  67.     SELECT CASE G%
  68.       CASE 72      :  DECR Fld%, 1                      ' <UP>
  69.                       IF Fld% = 0 THEN Fld% = Last%
  70.       CASE 80, 13  :  INCR Fld%, 1                      ' <DOWN> & <ENTER>
  71.                       IF Fld% > Last% THEN Fld% = 1
  72.       CASE 9       :  X% = 1                            ' <TAB>
  73.                       FOR G% = 1 TO TabFlds%              ' check tab
  74.                         IF Fld% < T?(G%) THEN             ' fields from start
  75.                           X% = T?(G%)                     ' to finish of the
  76.                           EXIT FOR                        ' list with the
  77.                         END IF                            ' default as #1
  78.                       NEXT                                '
  79.                       Fld% = X%                           '
  80.       CASE 15      :  X% = Last%                        ' <SHIFT><TAB>
  81.                       FOR G% = TabFlds% TO 1 STEP -1      ` same as above
  82.                         IF Fld% > T?(G%) THEN             ` but in reverse
  83.                           X% = T?(G%)                     ` order
  84.                           EXIT FOR                        `
  85.                         END IF                            `
  86.                       NEXT                                `
  87.                       Fld% = X%                           `
  88.       CASE 119      : Fld% = 1                          ' <CTRL><HOME>
  89.       CASE 117      : Fld% = Last%                      ' <CTRL><END>
  90.       CASE 68                                           ' <F-10>
  91.         G$ = CHR$(0,0,0,0)                                '
  92.         FOR G% = Last% TO 1 STEP -1                       ' run a last check
  93.           LSET tINP = F$(G%)                              ' on manditory flds
  94.           IF tINP.MustBe = 0 THEN ITERATE                 '
  95.           SELECT CASE tINP.Style                          '
  96.             CASE "N"                                      ' numbers
  97.               IF VAL( D$(G%) ) = 0 THEN EXIT FOR          '
  98.             CASE "D", "T"                                 ' dates & times
  99.               T& = CVL( D$(G%) + G$ )                     '
  100.               IF T& = 0 THEN EXIT FOR                     '
  101.             CASE ELSE                                     ' everything else
  102.               IF D$(G%) = "" THEN EXIT FOR                '
  103.           END SELECT                                      '
  104.         NEXT                                              '
  105.         IF G% = 0 THEN EXIT LOOP                          ' all fields ok!
  106.         Fld% = G%                                         ' go back & get it
  107.     END SELECT                                            '
  108.   LOOP                                                    '
  109.   IF HelpON% > 0 THEN TBoxWrite Hline$                    '
  110.                                                           '
  111.   FUNCTION = G$                                           '
  112.  
  113. END FUNCTION
  114.